package launcher.localLauncher;

import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Observer;

import javax.swing.JFrame;

import controler.ChessGameControlers;
import model.ChessGame;
import model.Couleur;
import controler.controlerLocal.ChessGameControler;
import vue.ChessGameGUI;



/**
 * @author francoise.perrin
 * Lance l'exécution d'un jeu d'échec en mode graphique.
 * La vue (ChessGameGUI) observe le modèle (ChessGame)
 * les échanges passent par le contrôleur (ChessGameControlers)
 * 
 */
public class LauncherGUI {

	
	

	/**
	 * @param args
	 * @throws IOException 
	 * @throws ClassNotFoundException 
	 */
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		Socket socket;
		ChessGame chessGame;	
		ChessGameControlers chessGameControler;
		JFrame frame;	
		Dimension dim;

		
		socket = null;
		dim = new Dimension(700,700);
		chessGame = new ChessGame();
		chessGameControler = new ChessGameControler(chessGame);

		try {
			//Connexion
			System.out.println("Client : Se connecte");
			socket = new Socket("127.0.0.1",2009);
		}catch (IOException e) {
			e.printStackTrace();
		}

		//Connected ?
		System.out.println (Serveur.lireMessage(socket));
		Serveur.envoieMessage(socket, "OK", true);
		//Couleur ?
		System.out.println("En attente de Couleur");
		Couleur couleur = (Couleur)Serveur.lireObjet(socket);
		System.out.println(couleur);
		Serveur.envoieMessage(socket, "OK", true);
		//Go ?
		System.out.println("En attente de Go");
		System.out.println (Serveur.lireMessage(socket));
		Serveur.envoieMessage(socket, "OK", true);

        frame = new ChessGameGUI("Jeu d'échec", chessGameControler,  dim);
		chessGame.addObserver((Observer) frame);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocation(600, 10);
		frame.setPreferredSize(dim);
		frame.pack();
		frame.setVisible(true);


		try {
			//Deconnexion
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
}
